package com.mastercard.assets.web.struts.actions;

import java.io.IOException;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;

import com.mastercard.assets.jpa.TblAsset;
import com.mastercard.assets.jpa.TblTipoCuenta;
import com.mastercard.assets.util.dao.MasterCardDAO;
import com.mastercard.assets.web.struts.forms.AssetAsignarPaquetesForm;
import com.mastercard.assets.web.util.to.UserLogin;

public class AssetsAsignacionPaquetesPreparacion
	extends
		Action
{
	public ActionForward execute(
							ActionMapping mapping , 
							ActionForm form ,
							HttpServletRequest request , 
							HttpServletResponse response )
		throws 
			IOException , 
			ServletException
	{
		HttpSession session = request.getSession( ) ;
		
		// en caos de null
		if( session == null )
			return mapping.findForward( "noLogin" ) ;
		
		// toma el userLogin
		UserLogin user = ( UserLogin ) session.getAttribute( "UserLogin" ) ;
		int roleId = user.getActualRoleId( ) ;
                
		// en caso de null
		if( user == null )
			return mapping.findForward( "noLogin" ) ;
		
		try
		{
			// convierte el form y toma la clave
			AssetAsignarPaquetesForm f = new AssetAsignarPaquetesForm( ) ;
			
			// toma los elementos encontrados
			TblAsset asset = ( TblAsset ) request.getAttribute( "ItemFinded" ) ;
			f.setCveAsset( asset.getCveAsset( ) ) ;
			
//			// actualiza los paquetes
//			MCUtil.updatePackageManager( MasterCardDAO.getAllPackagesOfAsset( asset.getCveAsset( ) , 1 ) , f.getPackageManager( ) ) ;
//			
			if( user.getActualRoleId( ) == 2 ){
                            
                            int cvePais = user.getTblUsuario( ).getTblPais( ).getCvePais( ) ;
                            // coloca los tipos de cuenta existentes para el pais
                            List< TblTipoCuenta > tipoCuentas = MasterCardDAO.getAllActiveCountTypesByCountry( cvePais ) ;
                            f.getPackageManager( ).setCountTypes( tipoCuentas ) ;
                            
                        }

			
//			
//			// resultado de tipo de cuentas
//			List< TblTipoCuenta > tipoCuentasRes = new ArrayList< TblTipoCuenta >( ) ;
//			
//			// recorre
//			for( TblTipoCuenta tc : tipoCuentas )
//				// en caso de que no sea vacio
//				if( tc.getTblCuentas( ).size( ) > 0 )
//					tipoCuentasRes.add( tc ) ;
//						
                        
                        // coloca el form en el request
			request.setAttribute( "AssetAsignarPaquetesForm" , f ) ;
			request.setAttribute( "UserLogin" , user ) ;
			
		}catch( Exception e )
		{
			e.printStackTrace( ) ;
			user.setMessageError( e.getMessage( ) ) ;
		}
		
		// en caso de que se cumpla, guarda el WorkArea
//                if(roleId==6){
//                    
//                }
                user.setNextWorkArea( "/WEB-INF/pages/WorkArea/AssetsAsignarPaqueteDesplegarFormulario.jsp" ) ;
		
	  	return mapping.findForward( "success" ) ;
	}
	
}
